www.gusucode.com > VC 图书管理系统源码程序 > VC 图书管理系统/VC 图书管理系统/图书管理系统/ReturnBookDlg.cpp
// ReturnBookDlg.cpp : implementation file // #include "stdafx.h" #include "time.h" #include "Library.h" #include "ReturnBookDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CReturnBookDlg dialog CReturnBookDlg::CReturnBookDlg(CWnd* pParent /*=NULL*/) : CDialog(CReturnBookDlg::IDD, pParent) { //{{AFX_DATA_INIT(CReturnBookDlg) m_Book_ID = _T(""); m_BorrowDate = _T(""); m_Days = 0; m_ReaderName = _T(""); m_ReturnDate = _T(""); //}}AFX_DATA_INIT } void CReturnBookDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CReturnBookDlg) DDX_Text(pDX, IDC_EDITBook_ID, m_Book_ID); DDX_Text(pDX, IDC_EDITBorrowDate, m_BorrowDate); DDX_Text(pDX, IDC_EDITDays, m_Days); DDX_Text(pDX, IDC_EDITReaderName, m_ReaderName); DDX_Text(pDX, IDC_EDITReturnDate, m_ReturnDate); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CReturnBookDlg, CDialog) //{{AFX_MSG_MAP(CReturnBookDlg) ON_EN_KILLFOCUS(IDC_EDITBook_ID, OnKillfocusEDITBookID) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CReturnBookDlg message handlers int CReturnBookDlg::QryBorrow() { int result; CTime m_ReturnDate_tmp; CString m_strtmp; CTime m_Current_Time=CTime::GetCurrentTime(); CTimeSpan m_TimeSpan_tmp(30,24,59,59); UpdateData(true); if (strcmp(m_Book_ID,"")==0) return 0; m_rsDataSet.m_strFilter ="reader.reader_ID=borrow.reader_ID and BOOK_ID='"+m_Book_ID+"'"; if (!m_rsDataSet.Open()) { AfxMessageBox("数据打开失败!"); return -1; } m_rsDataSet.Requery(); if (m_rsDataSet.GetRecordCount()!=0) { m_ReaderName=m_rsDataSet.m_ReaderName ; m_BorrowDate=m_rsDataSet.m_BORROW_DATE.Format("%Y, %B %d") ; m_ReturnDate_tmp=m_rsDataSet.m_BORROW_DATE+m_TimeSpan_tmp; m_ReturnDate=m_ReturnDate_tmp.Format("%Y,%B %d"); if (m_ReturnDate_tmp<m_Current_Time) { m_TimeSpan_tmp=CTime::GetCurrentTime()-m_ReturnDate_tmp; m_Days=m_TimeSpan_tmp.GetDays(); UpdateData(false); Insert_Fine(); result=1; } else { UpdateData(false); Insert_History();//正常还书 result=2; } m_rsDataSet.Close(); return result; } else { return 0; } } void CReturnBookDlg::OnKillfocusEDITBookID() { int rs; CWnd *pWnd; CString m_strtmp; rs=QryBorrow(); if(rs==1) { m_strtmp.Format("超期%d天,还书处理正常完成。是否继续处理还书流程?",m_Days); if(::MessageBox(this->m_hWnd,m_strtmp,"提示",MB_YESNO)==IDYES) SetTxtNull(); else CDialog::OnClose(); } else if(rs==2) { if(::MessageBox(this->m_hWnd,"还书处理正常完成","提示",MB_YESNO)==IDYES) SetTxtNull(); else CDialog::OnClose(); } else if(rs==0) { if (m_Book_ID == "") return; ::MessageBox(this->m_hWnd,"该书号信息不存在!","警告",MB_OK); } // TODO: Add your control notification handler code here pWnd=GetDlgItem(IDC_EDITBook_ID); pWnd->SetFocus(); } void CReturnBookDlg::OnCancel() { // TODO: Add extra cleanup here CDialog::OnCancel(); } int CReturnBookDlg::Insert_Fine() { CDatabase mdb; CString m_strsql; CTime m_CurrentTime; m_CurrentTime=CTime::GetCurrentTime(); m_strsql.Format("insert into fine(Reader_ID,amount,days,fine_date) values( \'%s\',%f,%d",m_rsDataSet.m_READER_ID,(m_Days*0.2),m_Days); m_strsql=m_strsql+",'"+m_CurrentTime.Format("%Y,%B %d")+"')"; if(!mdb.Open(_T("Library"))) { AfxMessageBox("数据库打开出错"); return 0; } try { mdb.BeginTrans(); mdb.ExecuteSQL(m_strsql); m_strsql = "UPDATE READER SET FLAG_BORROW='N' WHERE READER_ID='" +m_rsDataSet.m_READER_ID; m_strsql = m_strsql + "'"; mdb.ExecuteSQL(m_strsql); mdb.CommitTrans(); return 1; } catch(CDBException e) { AfxMessageBox("数据库执行出错"); return 0; } } int CReturnBookDlg::Insert_History() { CDatabase mdb; CString m_strsql; if(!mdb.Open(_T("library"))) { AfxMessageBox("数据库执行出错"); return 0; } m_strsql="INSERT INTO HISTORY (READER_ID,BOOK_ID,BORROW_DATE,RETURN_DATE) VALUES ('"+m_rsDataSet.m_READER_ID+"'"; m_strsql=m_strsql+",'"+m_rsDataSet.m_BOOK_ID+"'"; m_strsql=m_strsql+",'"+m_BorrowDate+"'"; m_strsql=m_strsql+",'"+(CTime::GetCurrentTime()).Format("%Y,%B %d")+"')"; try { mdb.BeginTrans(); mdb.ExecuteSQL(m_strsql); mdb.CommitTrans(); } catch(CDBException e) { AfxMessageBox("数据库执行出错"); return 0; } return 1; } int CReturnBookDlg::SetTxtNull() { CWnd *pWnd; m_Book_ID=""; m_BorrowDate=""; m_Days=0; m_ReaderName=""; m_ReturnDate=""; UpdateData(false); pWnd=GetDlgItem(IDC_EDITBook_ID); // pWnd->SetFocus(); return 1; } int CReturnBookDlg::setTxtDisable() { CWnd *pWnd; pWnd=GetDlgItem(IDC_EDITReaderName); pWnd->EnableWindow(false); pWnd=GetDlgItem(IDC_EDITBorrowDate); pWnd->EnableWindow(false); pWnd=GetDlgItem(IDC_EDITReturnDate); pWnd->EnableWindow(false); pWnd=GetDlgItem(IDC_EDITDays); pWnd->EnableWindow(false); return 1; } BOOL CReturnBookDlg::OnInitDialog() { CDialog::OnInitDialog(); // setTxtDisable(); return true; }